<?php
/**
 * Created by PhpStorm.
 * User: fengyan
 * Date: 2017/4/9
 * Time: 上午11:00
 */

namespace app\admin\model;


class AdminMenu extends BaseModel
{
    /**
     * @var bool 自动写入创建和更新的时间戳字段
     */
    protected $autoWriteTimestamp = false;

    /**
     * @var string 主键
     */
    protected $pk = 'id';

    /**
     * 添加时候自动完成
     * @var array
     */
    protected $insert = ['prev_ids', 'url_md5'];

    /**
     * 更新时候自动完成
     * @var array
     */
    protected $update = ['prev_ids', 'url_md5'];

    /**
     * 设置路径
     * @return string
     */
    protected function setPrevIdsAttr()
    {
        return $this->getPid(input('pid'));
    }

    /**
     * url地址转为小写最后返回md5值
     * @return string
     */
    protected function setUrlMd5Attr()
    {
        return $this->getUrlMd5(input('url'));
    }

    /**
     * url地址转为小写最后返回md5值
     * @param $url
     * @return string
     */
    public static function getUrlMd5($url)
    {
        return md5(self::getUrl($url));
    }

    /**
     * url地址转为小写
     * @param $url
     * @return string
     */
    public static function getUrl($url)
    {
        return strtolower($url);
    }

    /**
     * 获取pid编号
     * @param $id
     * @return string
     */
    public function getPid($id)
    {
        if (empty($id)) {
            return 0;
        }

        $pid = $this->where('id', $id)->value('pid');

        if (empty($pid)) {
            return $pid.','.$id;
        }
        return $this->getPid($pid).','.$id;
    }

    /**
     * 获取已启用的数据列表
     * @param int $menu_type
     * @param int $is_dev
     * @param null $root_id
     * @return false|\PDOStatement|string|\think\Collection
     */
    public function getUseList($menu_type = 0, $is_dev = null, $root_id = null)
    {
        $model = $this->where('status', '=', 99)->where('menu_type', '=', $menu_type)->where('hide', 0);

        if ($root_id !== null) {
            $model = $model->where('root_id', $root_id);
        }

        if ($is_dev !== null) {
            $model = $model->where('is_dev', '=', $is_dev);
        }

        return $model->field('id, pid, root_id, title, url, group, tip, menu_type')->order('sort asc, id desc')->select();
    }

    /**
     * 根据url获取信息
     * @param $url
     * @return mixed
     */
    public function getInfoByUrl($url)
    {
        return $this->where('url_md5', $this->getUrlMd5($url))->order('pid desc, id desc')->field('id,url,root_id,pid,prev_ids,group')->find();
    }

    /**
     * 获取列表根据路径
     * @param $prevIds
     * @return false|\PDOStatement|string|\think\Collection
     */
    public function getListByPrevIds($prevIds)
    {
        return $this->where('id in ('.$prevIds.')')->where('status', 99)->order('sort desc, pid desc, id desc')->field('id, title, url')->select();
    }

    /**
     * 清除菜单设置的session信息
     * @return bool
     */
    public static function clearMenuSession()
    {
        //  清除菜单的session值
        $mainlist = session('main_menu_list');
        if (!empty($mainlist)) {

        }

        session('main_menu_list', null);

        return true;
    }
}